You can call Q3Initialize and Q3Exit more than once now, we maintain a reference count around them (this is important if your application supports plug-ins, which may call QuickDraw 3D themselves).
Picking
Orthographic picking along axis is now working.
Low Memory
Several fixes that caused crashes in out of memory situations.
1.0.4 bug fixes
Enhancement
QuickDraw 3D's memory allocator will release memory back to the System as soon as possible. In earlier releases, memory was only freed when Q3Exit was called.
Picking
Picking when panes are used is fixed.
Geometries
General Polygons and Meshes had problems when a vertex was repeated (ranging from crash to incorrect rendering). This problem has been fixed.
I/O
In some out of memory situations, Q3Object_Read would post an out of memory error but it would return a non-NULL object. This object was invalid and could have caused a crash, if one hadn't noticed the failure by calling Q3Error_Get or through an error handler. Q3Object_Read now returns NULL for this failure case.
When Sets where attached to Shape objects (a common thing for custom attributes), the Sets would write out fine, but were being read in as unknown objects attached to the Shape objects. Sets now behave correctly when read in.
When reading a binary 3DMF file, object references (be it geometries, textures or any other reference) were being read as new objects, not as references. This problem was causing a data explosion when reading (ie. you could create the file, write it out, but you didn't have enough memory to read it back in). This has been fixed.
QuickDraw 3D RAVE
The entry point QARegisterDrawMethod was not being exported.
- Q3AttributeSet_Inherit crashes with custom attributes "in place" fixed
- Q3AttributeSet_Inherit does not call "CopyInherit" method for custom attributes fixed
- Controller library was not sharing data
- When monitor resolution changes, the change was not being taken into account
- Differences in renderers when origin was not 0,0
- Q3Point3D_ToSpherical and reciprocal were not reciprocal
- No warning handler could cause crash
- Picking on meshes could cause crash in certain cases
- ViewHints now takes NULL parameters
- A Gestalt selector was added for version number.
- General Polygon triangulation generated back faces.
3D Viewer
- Viewer memory handling fixes
- Viewer crashes when renderer was changed to wireframe, by accessing the View
- Q3Viewer_New returned NIL after Q3Initialize
- 3D Viewer gives up time, as part of its idle handler
Headers
- Added modifications from Symantec
- For Metrowerks, we now set and reset the alignment options within each file
Known Bugs
- When using the Macintosh Draw Context, the 2D library field must be set to none. This bug causes the following problems:
The Viewer does not respect the QuickDraw clip.
The Viewer may render at the incorrect location if the QuickDraw origin is not set 0,0.
- The wireframe renderer is not clearing/updating the Alpha channel when drawing.
- Bounding Sphere for polygonal geometries that are aligned with the coordinate axis will be incorrect. Others may be correct.
- If you have custom attributes/elements in a file, and the file is read without the custom attributes being registered, the custom attributes will appear as unknown objects, contained in a Set, attached to the Shape.